package com.cmc.cloud.cmclink.doc.vo;

import com.cmc.cloud.cmclink.doc.configuration.LocalDateTimeSerializer;
import com.cmc.cloud.cmclink.doc.rpcservice.vo.AgentNameBaseVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 申请主信息 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 *
 * @author codegen
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TblisustampMainFilesVO extends AgentNameBaseVo {

    private Long mainId;

    @Schema(description = "类别")
    private String category;

    @Schema(description = "代理代码")
    private String agentCode;

    @Schema(description = "起运港")
    private String portCode;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    private Long itemId;

    @Schema(description = "文件ID")
    private Long fileId;

    @Schema(description = "生效日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date effectDate;

    @Schema(description = "取消日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date cancelDate;

    @Schema(description = "记录状态", example = "2")
    private String approveStatus;

    @Schema(description = "审批流程取消理由")
    private String reason;

    @Schema(description = "审批流程取消人")
    private String cancelBy;

    @Schema(description = "审批流程提交人")
    private String submitBy;

    @Schema(description = "审批流程提交时间")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    private LocalDateTime submitDate;

    @Schema(description = "文件名称")
    private String fileName;

}
